package cn.xutongxue.interview.service;

import cn.xutongxue.interview.common.ResponseResult;
import cn.xutongxue.interview.entity.User;
import cn.xutongxue.interview.entity.dto.user.LoginDto;
import cn.xutongxue.interview.entity.dto.user.RegisterDto;
import cn.xutongxue.interview.entity.dto.user.UserQueryDto;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
* @author Administrator
* @description 针对表【sys_user(用户表)】的数据库操作Service
* @createDate 2024-09-11 16:43:44
*/
public interface UserService extends IService<User> {

    /**
     * 登录
     * @param loginDto 登录表单
     * @param request
     * @return
     */
    ResponseResult<Boolean> login(LoginDto loginDto, HttpServletRequest request);

    /**
     * 从session中获取用户信息
     * @param request
     * @return
     */
    ResponseResult<User> getLoginUserInfo(HttpServletRequest request);

    /**
     * 注册用户
     * @param registerDto 注册表单
     * @return
     */
    ResponseResult<Boolean> register(RegisterDto registerDto);

    /**
     * 添加签到记录
     * @param userId 签到用户id
     * @return 是否签到成功
     */
    boolean addUserSignIn(Long userId);

    /**
     * 获取用户签到日历图
     * @param userId 用户id
     * @param year 获取年份
     * @return 签到结果
     */
    List<Integer> getUserSignInRecord(Long userId, Integer year);

    /**
     * 查询用户列表
     * @param queryDto 查询参数
     * @return 查询结果
     */
    Page<User> listUserByPage(UserQueryDto queryDto);

    /**
     * 构造查询参数Wrapper
     * @param queryDto 查询参数
     * @return 查询参数Wrapper
     */
    QueryWrapper<User> getQueryWrapper(UserQueryDto queryDto);
}
